Typically, a processor uses a power saving sleep mode such as in accordance with an Advanced Configuration and Power Interface (ACPI) standard (e.g., Rev. 3.0b, published Oct. 10, 2006) when possible. These so-called C-state core low power states (ACPI C-states) in addition to voltage and frequency scaling (DVFS or ACPI performance state (P-states)) can save power when a core is idle or not fully utilized. However, even in a multi-core processor context, a core is often woken from an efficient sleep state to perform a relatively simple operation, and is then returned to the sleep state. This operation can adversely affect power efficiency, as there is a cost in both latency and power consumption for exiting and returning to low power states. During the state transition power may be consumed in some types of processors without useful work being accomplished, to the detriment of power efficiency.
Examples of operations to be handled upon exiting a low power state include keyboard inputs, timer interrupts, network interrupts and so on. To handle these operations in a power sensitive manner, current operating systems (OSs) change program behavior by processing larger amounts of data at a time, or moving to a tickless OS where there are no periodic timer interrupts, and only sporadic programmed ones. Another strategy is to use timer coalescing, where multiple interrupts are grouped and handled at the same time. But in addition to changing a program's behavior, all of these options raise complexity and still can lead to power inefficient operation. Further, some types of software (e.g., media playback) may make attempts to defeat hardware power efficiency mechanisms by requesting frequent, periodic wakes regardless of how much work needs to be accomplished. Thus, the tickless/timer coalescing strategies can save some power by reducing unnecessary wakes from deep C-states, but they require invasive changes to the OS and may take a significant amount of time to propagate through a computing ecosystem, as such changes are not implemented until a new version of an operating system is distributed.